]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
st: Ignore filtered selection events not meant to our clipboard window
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 7 Oct 2016 21:46:27 +0000 (23:46 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Sun, 9 Oct 2016 08:57:47 +0000 (10:57 +0200)
Other windows like the mutter Xwayland selection bridges might deal with
the clipboard, which would result in events visible on st-clipboard event
filters.

In order to avoid unintended results, ignore events that are not meant for
the clipboard window.

https://bugzilla.gnome.org/show_bug.cgi?id=760745

src/st/st-clipboard.c

index 556721d7f97b778dbff268c4f5ffa247c76aaffc..d5b1395e480f854d13872ba3a7b8e761ac7d603d 100644 (file)
@@ -117,6 +117,7 @@ st_clipboard_provider (GdkXEvent *xevent_p,
   GdkDisplay *display = gdk_display_get_default ();
 
   if (xev->type != SelectionRequest ||
+      xev->xany.window != clipboard->priv->clipboard_window ||
       !clipboard->priv->clipboard_text)
     return GDK_FILTER_CONTINUE;
 
@@ -233,13 +234,15 @@ st_clipboard_x11_event_filter (GdkXEvent *xevent_p,
 {
   XEvent *xev = (XEvent *) xevent_p;
   EventFilterData *filter_data = user_data;
+  StClipboardPrivate *priv = filter_data->clipboard->priv;
   Atom actual_type;
   int actual_format, result;
   unsigned long nitems, bytes_after;
   unsigned char *data = NULL;
   GdkDisplay *display = gdk_display_get_default ();
 
-  if(xev->type != SelectionNotify)
+  if(xev->type != SelectionNotify ||
+     xev->xany.window != priv->clipboard_window)
     return GDK_FILTER_CONTINUE;
 
   if (xev->xselection.property == None)